\chapter{Besoins non fonctionnels}

\paragraph{}Les besoins non-fonctionnels apportent au système des fonctionalités supplémentaires qui ne sont pas demandés explicitement dans le cahier des charges.

\section{Langage de programmation et plateforme}
\subsection*{Description :}
Nous avons choisi d'utiliser les langages C/C++ pour réaliser ce programme.
\subsection*{Justification :}
Le langage C est utilisé pour la bibliothèque CUDA\footnote{Nous avons utilisé la dernière version du SDK : CUDA 4.1}, il est donc possible de l'utiliser dans du code C++ afin d'utiliser toute la puissance de celui-ci. Théoriquement, l'API étant disponible sur plusieurs systèmes d'exploitation, il sera possible de l'utiliser sur plusieurs plateformes; mais nous nous focaliserons sur sa version LINUX.

\section{Interface utilisateur}
\subsection*{Description :}
Une petite interface utilisateur va permettre de lancer quelques algorithmes avec, par exemple, les performances en images par seconde.
\subsection*{Justification :}
Elle va permettre de présenter les algorithmes implémentés ainsi que les performances (en temps réel) en fonction des différents modes (Séquentiel/Parallèle). Il sera ainsi facile de comparer les performances des algorithmes en fonction du mode de calcul.

\section{Facilité d'utilisation}
\subsection*{Description :}
Nous insisterons sur la facilité de l'utilisation de la bibliothèque pour que l'utilisateur n'ait pas à se soucier du découpage de ses données en fonction de l'architecture.
\subsection*{Justification :}
L'utilisateur doit pouvoir fournir ses données, choisir un algorithme et c'est le programme qui se chargera de choisir la solution la plus adaptée (la plus performante) en fonction de son architecture (Séquentielle/Parallèle). Pour un utilisateur averti, il lui sera possible de choisir explicitement le matériel à utiliser (CPU/GPU).

\section{Documentation}
\subsection*{Description :}
La documentation est essentielle pour une bibliothèque afin de spécifier clairement l'utilisation des fonctions. Elle sera réalisée avec Doxygen.
\subsection*{Justification :}
Elle va permettre de faciliter l'utilisation de la bibliothèque et de spécifier les différentes catégories de problèmes calculables  ainsi que les différents modes de calcul disponibles.
